package com.atguigu.gulimall.product.feign;

import com.atguigu.common.to.SkuReductionTo;
import com.atguigu.common.to.SpuBoundTo;
import com.atguigu.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient("gulimall-coupon")
public interface CouponFeignService {

    /**
     * 如果传递的是对象 就是将这个对象转为json 在加了 requestBody后 找到gulimall-coupon
     * 给服务coupon/spubounds/save发送请求  将上一步的转的json放在请求体位置
     * 对方服务收到请求 收到请求体里面有json数据
     * 我们可以直接写成 SpuBoundsEntity spuBounds   (有一一对应就能进行封装)
     * 总结：
     *      只要josn数据模型是兼容的双方服务可以不使用同一个To
     * @param spuBoundTo
     * @return
     */
    // 4.1. spu的积分表  送积分 和 增长值   gulimall_sms -> sms_spu_bounds
    @PostMapping("coupon/spubounds/save")
    R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo);
    /**
     * 1、CouponFeignService.saveSpuBounds(spuBoundTo);
     *      1）、@RequestBody将这个对象转为json。
     *      2）、找到gulimall-coupon服务，给/coupon/spubounds/save发送请求。
     *          将上一步转的json放在请求体位置，发送请求；
     *      3）、对方服务收到请求。请求体里有json数据。
     *          (@RequestBody SpuBoundsEntity spuBounds)；将请求体的json转为SpuBoundsEntity；
     * 只要json数据模型是兼容的。双方服务无需使用同一个to
     */


    // 5.4)、sku的优惠信息和满减信息 gulimall_sms -> sms_sku_ladder  这个是打折表几件打几折

    // 5.5)、sku的满减表  满多少钱减多少  gulimall_sms -> sms_sku_full_reduction

    // 5.6)、sku对应会员等级所购买的价格 gulimall_sms -> sms_member_price

    // 将上面的三步全部转在我们gulimall-coupon的一个方法里面进行实现我们就不在这里进行单独的实现了
    @PostMapping("coupon/skufullreduction/saveInfo")
    R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo);
}
